package com.ljl.ssm.service;

import com.ljl.ssm.entity.Order;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ljl.ssm.entity.OrderItem;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author BaoZhou
 * @since 2019-07-07
 */
public interface IOrderService extends IService<Order> {
    String waitPay = "等待支付";
    String waitDelivery = "等待发货";
    String waitConfirm = "等待接收";
    String waitReview = "等待评论";
    String finish = "完成订单";
    String delete = "删除";

    /**
     * 根据ID返回对应的Order
     *
     * @param id
     * @return
     */
    Order get(int id);

    /**
     * 返回所有的订单
     *
     * @return
     */
    List<Order> listAll();

    /**
     * 按照用户、订单状态来查询
     *
     * @param user_id
     * @param excludedStatus
     * @return
     */
    List<Order> list(Integer user_id, String excludedStatus);

    /**
     * 返回user_id下的所有订单
     *
     * @param user_id
     * @return
     */
    List<Order> listByUserId(Integer user_id);

    /**
     * 更新订单
     *
     * @param order
     */
    void update(Order order);

    /**
     * 增加订单
     *
     * @param order
     */
    void add(Order order);

    /**
     * 增加订单，返回一个float类型的数值用来表示该订单的总价
     *
     * @param order
     * @param orderItems
     * @return
     */
    float add(Order order, List<OrderItem> orderItems);

}
